package main

import "fmt"

type Base struct{}

func (Base) Magic() {
	fmt.Println("base magic")
}

func (b Base) MoreMagic() {
	b.Magic()
	b.Magic()
}

type Voodoo struct{ Base }

func (v *Voodoo) Magic() {
	fmt.Println("voodoo magic")
}

func main() {
	v := new(Voodoo)
	v.Magic()
	v.MoreMagic()
}
